/* 树中元素为x的结点，删除以它为根的子树 */
#include <iostream>
#include "BiTreefun.h"
using namespace std;
#define maxsize 50

// 删除以key为根结点的子树
void del(BTNode *&bt, char key)
{
  // 如果二叉树不为空
  if (bt != NULL)
  {
    // 如果根结点的值为key -- 置空
    if (bt->data == key)
    {
      bt = NULL;
      return;
    }
    
    // 在左子树中删除
    del(bt->lchild, key);
    
    // 在左子树中删除
    del(bt->rchild, key);
    return;
  }
}

// 前序遍历
void pre(BTNode *T)
{
  // 如果二叉树不为空
  if (T != NULL)
  {
    // 输出根结点
    cout << T->data << " ";
    
    // 输出左子树
    pre(T->lchild);
    
    // 输出右子树
    pre(T->rchild);
  }
}

int main()
{
  // 创建二叉树
  BTNode *T = create_bitree();
  
  // 删除以5为根结点的子树
  del(T, '5');
  
  // 前序遍历
  pre(T);
  return 0;
}